
#ifndef _SMART_VOICE__INPUT_H__INCLUDED_
#define _SMART_VOICE__INPUT_H__INCLUDED_

#include "Nebula.h"
#include "Tasks.h"

namespace smartvoice {

using namespace nebula::sdk;

class Input : public GeneratorBase
{
public:
	virtual NEBULA_ERROR_CODE OnInitialize();
	virtual NEBULA_ERROR_CODE OnStart();
	virtual void              OnStop();
	virtual void              OnFinalize();

	virtual nebula::sdk::ITask* AllocateTask();
	virtual nebula::sdk::ITask* ForkTask(ITask*, const char*);

protected:
	static NEBULA_ERROR_CODE raw_input_handler(IService* service, IRequest* request, ITask* intask, ITask** outtask);
	NEBULA_ERROR_CODE raw_input_handler(SessionTask* task);
};

} // namespace smartvoice

#endif // _SMART_VOICE__INPUT_H__INCLUDED_

